home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / HAMRADIO / KAM401.ZIP / KAM-VID.PAS < prev    next >
Pascal/Delphi Source File  |  1989-06-11  |  3KB  |  115 lines

  1. procedure clean_up_display;
  2. var start, finish : integer;
  3. begin
  4.    if (xkbd <= 1) AND (ykbd = out_start_line) then exit;
  5.    start := (80*(yout - 1) + xout) - 1;
  6.    finish := (80*(ykbd - 1) + xkbd) - 1;
  7.    while start <= finish do
  8.    begin
  9.      if (start > lead_attr) then
  10.        video^[start].a := xmt_attrib;
  11.      start := start + 1;
  12.    end;
  13. end;
  14.  
  15. procedure del_char;
  16. var backslash : char;
  17. begin
  18.   if (inp_ptr <> out_ptr) OR (mode in [AMTOR,PACKET]) then
  19.   begin
  20.     if xkbd > 1 then
  21.     begin
  22.       if (mode in [CW,RTTY,ASCII]) then
  23.       begin
  24.         inp_ptr := inp_ptr - 1;
  25.         if (inp_ptr < 0 ) then inp_ptr := buf_size;
  26.         dec(xkbd);
  27.         gotoxy(xkbd,ykbd);
  28.         transmit_color;
  29.         write(' '^H);
  30.       end;
  31.       if mode in [AMTOR, PACKET] then
  32.         begin
  33.           transmit_color;
  34.           gotoxy(xout,yout); write(' ');
  35.           dec(xout);
  36.           kam_out(^H);
  37.           dec(xkbd);
  38.           gotoxy(xkbd,ykbd);
  39.           write(' '^H);
  40.           repeat until char_ready;
  41.           backslash := kam_in;
  42.         end;
  43.     end;
  44.   end;
  45. end;
  46.  
  47. procedure add_char(ch : char);
  48. begin
  49.   inp_ptr := (inp_ptr + 1) AND buf_size;
  50.   kbd_buffer[inp_ptr] := ch;
  51.   gotoxy(xkbd,ykbd);
  52.   case state  of
  53.     transmit   : transmit_color;
  54.     receive    : aux_color;
  55.     transceive : transmit_color;
  56.   end;
  57.   if ch = #$0D
  58.   then begin
  59.          write(#31);
  60.          xkbd := 1;
  61.          ykbd := ykbd + 1;
  62.        end
  63.   else begin
  64.          case ch of
  65.            #07 : case mode of
  66.                    CW     : write(' ');
  67.                    AMTOR,
  68.                    RTTY,
  69.                    ASCII,
  70.                    PACKET : write(#254);
  71.                  end;
  72.            else  write(ch);
  73.          end;
  74.          xkbd := xkbd + 1;
  75.          if xkbd > scrn_width then
  76.          begin
  77.            xkbd := 1;
  78.            ykbd := ykbd + 1;
  79.          end;
  80.        end;
  81.   if ykbd > out_end_line then
  82.     begin
  83.       transmit_color;
  84.       window(1,out_start_line,80,out_end_line);
  85.       gotoxy(1,1); DelLine;
  86.       full_window;
  87.       ykbd := ykbd - 1;
  88.       yout := yout - 1;
  89.     end;
  90.   gotoxy(xkbd,ykbd);
  91. end;
  92.  
  93. procedure RYs;
  94. var   i : integer;
  95.      RY : string[72];
  96. begin
  97.   RY := 'RYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRYRY';
  98.   for i := 1 to length(RY) do
  99.     add_char(RY[i]);
  100.   add_char(#13);
  101. end;
  102.  
  103. procedure xmt_msg( nbr : integer);
  104. var  index : integer;
  105.      size  : integer;
  106. begin
  107.   index := 1;
  108.   size := ord(msg[nbr][0])+1;
  109.   while (index < size) do
  110.     begin
  111.       add_char(msg[nbr][index]);
  112.       index := index + 1;
  113.     end;
  114. end;
  115.